/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.os.dao.ephimov;

import edu.os.dao.ephimov.memorydao.*;
import edu.os.dao.ephimov.interfaces.*;


/**
 *
 * @author shalash
 */
public abstract class DAOFactory {
    
    public static final int MEMORY = 1;
    public static final int ORACLE = 2;
    
    public abstract ApplicationDAO           getApplicationDAO();
    public abstract ApplicationCategoriesDAO getApplicationCategoriesDAO();
    public abstract OrderDAO                 getOrderDAO();
    public abstract UserDAO                  getUserDAO();
    public abstract CategoryDAO              getCategoryDAO();
    public abstract ListOrdersDAO            getListOrdersDAO();
    public abstract UserPaymentSystemDAO     getUserPaymentSystemDAO();
    public abstract RegistrationDAO          getRegistrationDAO();
    public abstract LikeApplicationDAO       getLikeApplicationDAO();
    public abstract RoleUserDAO              getRoleUserDAO();
    public abstract PaymentSystemDAO         getPaymentSystemDAO();
    public abstract RequisitesDAO            getRequisitesDAO();
    
    
    public static DAOFactory getDAOFactory(int whichFactory) {
        switch (whichFactory) {
            case MEMORY:
                return new MemoryDAOFactory();
            default:
                    return null;
        }
    }
}
